/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Persistencia;

import java.sql.*;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import negocio.Truco;
import negocio.Usuario;

/**
 *
 * @author JAVA
 */
public class PersistenciaTruco {
    
    public static int guardarTruco(Truco truco){
        int i = 0;
        try {
            Conexion conexion=new Conexion();
            i = conexion.open().executeUpdate("insert into trucos (id,nombre,descripcion,nivel,subnivel,puntos,baja) values(0,'" + truco.getNombre() + "','" + truco.getDescripcion() + "','" + truco.getNivel() + "','" + truco.getSubnivel() + "','" + truco.getPuntos() + "',0)");
            conexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaTabla.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            return i;
        }
    }
    
    public static int borrarTruco(Truco truco){
        int i=0;
        try {            
            Conexion conexion=new Conexion();
            i = conexion.open().executeUpdate("update trucos set baja=1 where trucos.id="+truco.getId());
            conexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaTabla.class.getName()).log(Level.SEVERE, null, ex);
        }finally{          
            return i;
        }
    }
    
    public static Truco obtenerTruco(int id){
        Truco t=null;
        try{
            Conexion conexion=new Conexion();
            ResultSet rset=conexion.open().executeQuery("select id,nombre,descripcion,nivel,subnivel,puntos from trucos where trucos.baja=0 and trucos.id="+id);
            while(rset.next()){
                t=new Truco(rset.getInt("id"),rset.getString("nombre"),rset.getString("nivel"),rset.getInt("subnivel"),rset.getString("descripcion"),rset.getInt("puntos"));
            }
            conexion.close();
        }catch (SQLException ex) {
            Logger.getLogger(PersistenciaTabla.class.getName()).log(Level.SEVERE, null, ex);
        }finally{          
            return t;
        }
    }
    
    public static ArrayList<Truco> obtenerTrucos(){
        ArrayList<Truco> lista = new ArrayList<Truco>();
        try{
            Conexion conexion=new Conexion();
            ResultSet rset=conexion.open().executeQuery("select id,nombre,descripcion,nivel,subnivel,puntos,baja from trucos where trucos.baja=0");
            while(rset.next()){
                Truco truco=new Truco(rset.getInt("id"),rset.getString("nombre"),rset.getString("nivel"),rset.getInt("subnivel"),rset.getString("descripcion"),rset.getInt("puntos"));
                lista.add(truco);
            }
            conexion.close();
        }catch (SQLException ex) {
            Logger.getLogger(PersistenciaTabla.class.getName()).log(Level.SEVERE, null, ex);
        }finally{          
            return lista;
        }
    }
    
    public static int actualizarTruco(Truco nuevo){
        int i=0;
        try {            
            Conexion conexion=new Conexion();
            i = conexion.open().executeUpdate("update trucos set nombre='"+nuevo.getNombre()+"', nivel='"+nuevo.getNivel()+"', subnivel="+nuevo.getSubnivel()+", puntos="+nuevo.getPuntos()+", descripcion='"+nuevo.getDescripcion()+"' where trucos.id="+nuevo.getId());
            conexion.open();
        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaTabla.class.getName()).log(Level.SEVERE, null, ex);
        }finally{          
            return i;
        }
    }
    
    public static ArrayList<Truco> obtenerTrucosdelNivel(String nivel){
        ArrayList<Truco> lista = new ArrayList<Truco>();
        try{
            Conexion conexion=new Conexion();
            ResultSet rset = conexion.open().executeQuery("select id,nombre,descripcion,nivel,subnivel,puntos from trucos where nivel='"+nivel+"'");
            while(rset.next()){
                Truco t=new Truco(rset.getInt("id"), rset.getString("nombre"), rset.getString("nivel"), rset.getInt("subnivel"), rset.getString("descripcion"), rset.getInt("puntos"));
                lista.add(t);
            }
            conexion.close();
        }catch (SQLException ex) {
            Logger.getLogger(PersistenciaTabla.class.getName()).log(Level.SEVERE, null, ex);
        }finally{          
            return lista;
        }
    }
    
     public static ArrayList<Truco> obtenerTrucosNoSuperados(Usuario u){
        ArrayList<Truco> lista = new ArrayList<Truco>();
        try{
            Conexion conexion=new Conexion();
            ResultSet rset = conexion.open().executeQuery("select id,nombre,descripcion,nivel,subnivel,puntos from trucos where trucos.nivel='"+u.getNivel()+"' and trucos.id not in (select idtruco from trucossuperados where idusuario="+u.getId()+")");
            while(rset.next()){
                Truco t=new Truco(rset.getInt("id"), rset.getString("nombre"), rset.getString("nivel"), rset.getInt("subnivel"), rset.getString("descripcion"), rset.getInt("puntos"));
                lista.add(t);
            }
            conexion.close();
        }catch (SQLException ex) {
            Logger.getLogger(PersistenciaTabla.class.getName()).log(Level.SEVERE, null, ex);
        }finally{          
            return lista;
        }
    }
}
